home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / rtnetlink.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  15KB  |  615 lines

  1. #ifndef __LINUX_RTNETLINK_H
  2. #define __LINUX_RTNETLINK_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/netlink.h>
  6. #include <linux/if_link.h>
  7. #include <linux/if_addr.h>
  8. #include <linux/neighbour.h>
  9.  
  10. /****
  11.  *        Routing/neighbour discovery messages.
  12.  ****/
  13.  
  14. /* Types of messages */
  15.  
  16. enum {
  17.     RTM_BASE    = 16,
  18. #define RTM_BASE    RTM_BASE
  19.  
  20.     RTM_NEWLINK    = 16,
  21. #define RTM_NEWLINK    RTM_NEWLINK
  22.     RTM_DELLINK,
  23. #define RTM_DELLINK    RTM_DELLINK
  24.     RTM_GETLINK,
  25. #define RTM_GETLINK    RTM_GETLINK
  26.     RTM_SETLINK,
  27. #define RTM_SETLINK    RTM_SETLINK
  28.  
  29.     RTM_NEWADDR    = 20,
  30. #define RTM_NEWADDR    RTM_NEWADDR
  31.     RTM_DELADDR,
  32. #define RTM_DELADDR    RTM_DELADDR
  33.     RTM_GETADDR,
  34. #define RTM_GETADDR    RTM_GETADDR
  35.  
  36.     RTM_NEWROUTE    = 24,
  37. #define RTM_NEWROUTE    RTM_NEWROUTE
  38.     RTM_DELROUTE,
  39. #define RTM_DELROUTE    RTM_DELROUTE
  40.     RTM_GETROUTE,
  41. #define RTM_GETROUTE    RTM_GETROUTE
  42.  
  43.     RTM_NEWNEIGH    = 28,
  44. #define RTM_NEWNEIGH    RTM_NEWNEIGH
  45.     RTM_DELNEIGH,
  46. #define RTM_DELNEIGH    RTM_DELNEIGH
  47.     RTM_GETNEIGH,
  48. #define RTM_GETNEIGH    RTM_GETNEIGH
  49.  
  50.     RTM_NEWRULE    = 32,
  51. #define RTM_NEWRULE    RTM_NEWRULE
  52.     RTM_DELRULE,
  53. #define RTM_DELRULE    RTM_DELRULE
  54.     RTM_GETRULE,
  55. #define RTM_GETRULE    RTM_GETRULE
  56.  
  57.     RTM_NEWQDISC    = 36,
  58. #define RTM_NEWQDISC    RTM_NEWQDISC
  59.     RTM_DELQDISC,
  60. #define RTM_DELQDISC    RTM_DELQDISC
  61.     RTM_GETQDISC,
  62. #define RTM_GETQDISC    RTM_GETQDISC
  63.  
  64.     RTM_NEWTCLASS    = 40,
  65. #define RTM_NEWTCLASS    RTM_NEWTCLASS
  66.     RTM_DELTCLASS,
  67. #define RTM_DELTCLASS    RTM_DELTCLASS
  68.     RTM_GETTCLASS,
  69. #define RTM_GETTCLASS    RTM_GETTCLASS
  70.  
  71.     RTM_NEWTFILTER    = 44,
  72. #define RTM_NEWTFILTER    RTM_NEWTFILTER
  73.     RTM_DELTFILTER,
  74. #define RTM_DELTFILTER    RTM_DELTFILTER
  75.     RTM_GETTFILTER,
  76. #define RTM_GETTFILTER    RTM_GETTFILTER
  77.  
  78.     RTM_NEWACTION    = 48,
  79. #define RTM_NEWACTION   RTM_NEWACTION
  80.     RTM_DELACTION,
  81. #define RTM_DELACTION   RTM_DELACTION
  82.     RTM_GETACTION,
  83. #define RTM_GETACTION   RTM_GETACTION
  84.  
  85.     RTM_NEWPREFIX    = 52,
  86. #define RTM_NEWPREFIX    RTM_NEWPREFIX
  87.  
  88.     RTM_GETMULTICAST = 58,
  89. #define RTM_GETMULTICAST RTM_GETMULTICAST
  90.  
  91.     RTM_GETANYCAST    = 62,
  92. #define RTM_GETANYCAST    RTM_GETANYCAST
  93.  
  94.     RTM_NEWNEIGHTBL    = 64,
  95. #define RTM_NEWNEIGHTBL    RTM_NEWNEIGHTBL
  96.     RTM_GETNEIGHTBL    = 66,
  97. #define RTM_GETNEIGHTBL    RTM_GETNEIGHTBL
  98.     RTM_SETNEIGHTBL,
  99. #define RTM_SETNEIGHTBL    RTM_SETNEIGHTBL
  100.  
  101.     RTM_NEWNDUSEROPT = 68,
  102. #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
  103.  
  104.     RTM_NEWADDRLABEL = 72,
  105. #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
  106.     RTM_DELADDRLABEL,
  107. #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
  108.     RTM_GETADDRLABEL,
  109. #define RTM_GETADDRLABEL RTM_GETADDRLABEL
  110.  
  111.     RTM_GETDCB = 78,
  112. #define RTM_GETDCB RTM_GETDCB
  113.     RTM_SETDCB,
  114. #define RTM_SETDCB RTM_SETDCB
  115.  
  116.     __RTM_MAX,
  117. #define RTM_MAX        (((__RTM_MAX + 3) & ~3) - 1)
  118. };
  119.  
  120. #define RTM_NR_MSGTYPES    (RTM_MAX + 1 - RTM_BASE)
  121. #define RTM_NR_FAMILIES    (RTM_NR_MSGTYPES >> 2)
  122. #define RTM_FAM(cmd)    (((cmd) - RTM_BASE) >> 2)
  123.  
  124. /* 
  125.    Generic structure for encapsulation of optional route information.
  126.    It is reminiscent of sockaddr, but with sa_family replaced
  127.    with attribute type.
  128.  */
  129.  
  130. struct rtattr
  131. {
  132.     unsigned short    rta_len;
  133.     unsigned short    rta_type;
  134. };
  135.  
  136. /* Macros to handle rtattributes */
  137.  
  138. #define RTA_ALIGNTO    4
  139. #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
  140. #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
  141.              (rta)->rta_len >= sizeof(struct rtattr) && \
  142.              (rta)->rta_len <= (len))
  143. #define RTA_NEXT(rta,attrlen)    ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
  144.                  (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
  145. #define RTA_LENGTH(len)    (RTA_ALIGN(sizeof(struct rtattr)) + (len))
  146. #define RTA_SPACE(len)    RTA_ALIGN(RTA_LENGTH(len))
  147. #define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
  148. #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
  149.  
  150.  
  151.  
  152.  
  153. /******************************************************************************
  154.  *        Definitions used in routing table administration.
  155.  ****/
  156.  
  157. struct rtmsg
  158. {
  159.     unsigned char        rtm_family;
  160.     unsigned char        rtm_dst_len;
  161.     unsigned char        rtm_src_len;
  162.     unsigned char        rtm_tos;
  163.  
  164.     unsigned char        rtm_table;    /* Routing table id */
  165.     unsigned char        rtm_protocol;    /* Routing protocol; see below    */
  166.     unsigned char        rtm_scope;    /* See below */    
  167.     unsigned char        rtm_type;    /* See below    */
  168.  
  169.     unsigned        rtm_flags;
  170. };
  171.  
  172. /* rtm_type */
  173.  
  174. enum
  175. {
  176.     RTN_UNSPEC,
  177.     RTN_UNICAST,        /* Gateway or direct route    */
  178.     RTN_LOCAL,        /* Accept locally        */
  179.     RTN_BROADCAST,        /* Accept locally as broadcast,
  180.                    send as broadcast */
  181.     RTN_ANYCAST,        /* Accept locally as broadcast,
  182.                    but send as unicast */
  183.     RTN_MULTICAST,        /* Multicast route        */
  184.     RTN_BLACKHOLE,        /* Drop                */
  185.     RTN_UNREACHABLE,    /* Destination is unreachable   */
  186.     RTN_PROHIBIT,        /* Administratively prohibited    */
  187.     RTN_THROW,        /* Not in this table        */
  188.     RTN_NAT,        /* Translate this address    */
  189.     RTN_XRESOLVE,        /* Use external resolver    */
  190.     __RTN_MAX
  191. };
  192.  
  193. #define RTN_MAX (__RTN_MAX - 1)
  194.  
  195.  
  196. /* rtm_protocol */
  197.  
  198. #define RTPROT_UNSPEC    0
  199. #define RTPROT_REDIRECT    1    /* Route installed by ICMP redirects;
  200.                    not used by current IPv4 */
  201. #define RTPROT_KERNEL    2    /* Route installed by kernel        */
  202. #define RTPROT_BOOT    3    /* Route installed during boot        */
  203. #define RTPROT_STATIC    4    /* Route installed by administrator    */
  204.  
  205. /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
  206.    they are just passed from user and back as is.
  207.    It will be used by hypothetical multiple routing daemons.
  208.    Note that protocol values should be standardized in order to
  209.    avoid conflicts.
  210.  */
  211.  
  212. #define RTPROT_GATED    8    /* Apparently, GateD */
  213. #define RTPROT_RA    9    /* RDISC/ND router advertisements */
  214. #define RTPROT_MRT    10    /* Merit MRT */
  215. #define RTPROT_ZEBRA    11    /* Zebra */
  216. #define RTPROT_BIRD    12    /* BIRD */
  217. #define RTPROT_DNROUTED    13    /* DECnet routing daemon */
  218. #define RTPROT_XORP    14    /* XORP */
  219. #define RTPROT_NTK    15    /* Netsukuku */
  220. #define RTPROT_DHCP    16      /* DHCP client */
  221.  
  222. /* rtm_scope
  223.  
  224.    Really it is not scope, but sort of distance to the destination.
  225.    NOWHERE are reserved for not existing destinations, HOST is our
  226.    local addresses, LINK are destinations, located on directly attached
  227.    link and UNIVERSE is everywhere in the Universe.
  228.  
  229.    Intermediate values are also possible f.e. interior routes
  230.    could be assigned a value between UNIVERSE and LINK.
  231. */
  232.  
  233. enum rt_scope_t
  234. {
  235.     RT_SCOPE_UNIVERSE=0,
  236. /* User defined values  */
  237.     RT_SCOPE_SITE=200,
  238.     RT_SCOPE_LINK=253,
  239.     RT_SCOPE_HOST=254,
  240.     RT_SCOPE_NOWHERE=255
  241. };
  242.  
  243. /* rtm_flags */
  244.  
  245. #define RTM_F_NOTIFY        0x100    /* Notify user of route change    */
  246. #define RTM_F_CLONED        0x200    /* This route is cloned        */
  247. #define RTM_F_EQUALIZE        0x400    /* Multipath equalizer: NI    */
  248. #define RTM_F_PREFIX        0x800    /* Prefix addresses        */
  249.  
  250. /* Reserved table identifiers */
  251.  
  252. enum rt_class_t
  253. {
  254.     RT_TABLE_UNSPEC=0,
  255. /* User defined values */
  256.     RT_TABLE_COMPAT=252,
  257.     RT_TABLE_DEFAULT=253,
  258.     RT_TABLE_MAIN=254,
  259.     RT_TABLE_LOCAL=255,
  260.     RT_TABLE_MAX=0xFFFFFFFF
  261. };
  262.  
  263.  
  264. /* Routing message attributes */
  265.  
  266. enum rtattr_type_t
  267. {
  268.     RTA_UNSPEC,
  269.     RTA_DST,
  270.     RTA_SRC,
  271.     RTA_IIF,
  272.     RTA_OIF,
  273.     RTA_GATEWAY,
  274.     RTA_PRIORITY,
  275.     RTA_PREFSRC,
  276.     RTA_METRICS,
  277.     RTA_MULTIPATH,
  278.     RTA_PROTOINFO, /* no longer used */
  279.     RTA_FLOW,
  280.     RTA_CACHEINFO,
  281.     RTA_SESSION, /* no longer used */
  282.     RTA_MP_ALGO, /* no longer used */
  283.     RTA_TABLE,
  284.     __RTA_MAX
  285. };
  286.  
  287. #define RTA_MAX (__RTA_MAX - 1)
  288.  
  289. #define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
  290. #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
  291.  
  292. /* RTM_MULTIPATH --- array of struct rtnexthop.
  293.  *
  294.  * "struct rtnexthop" describes all necessary nexthop information,
  295.  * i.e. parameters of path to a destination via this nexthop.
  296.  *
  297.  * At the moment it is impossible to set different prefsrc, mtu, window
  298.  * and rtt for different paths from multipath.
  299.  */
  300.  
  301. struct rtnexthop
  302. {
  303.     unsigned short        rtnh_len;
  304.     unsigned char        rtnh_flags;
  305.     unsigned char        rtnh_hops;
  306.     int            rtnh_ifindex;
  307. };
  308.  
  309. /* rtnh_flags */
  310.  
  311. #define RTNH_F_DEAD        1    /* Nexthop is dead (used by multipath)    */
  312. #define RTNH_F_PERVASIVE    2    /* Do recursive gateway lookup    */
  313. #define RTNH_F_ONLINK        4    /* Gateway is forced on link    */
  314.  
  315. /* Macros to handle hexthops */
  316.  
  317. #define RTNH_ALIGNTO    4
  318. #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
  319. #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
  320.                ((int)(rtnh)->rtnh_len) <= (len))
  321. #define RTNH_NEXT(rtnh)    ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
  322. #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
  323. #define RTNH_SPACE(len)    RTNH_ALIGN(RTNH_LENGTH(len))
  324. #define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
  325.  
  326. /* RTM_CACHEINFO */
  327.  
  328. struct rta_cacheinfo
  329. {
  330.     __u32    rta_clntref;
  331.     __u32    rta_lastuse;
  332.     __s32    rta_expires;
  333.     __u32    rta_error;
  334.     __u32    rta_used;
  335.  
  336. #define RTNETLINK_HAVE_PEERINFO 1
  337.     __u32    rta_id;
  338.     __u32    rta_ts;
  339.     __u32    rta_tsage;
  340. };
  341.  
  342. /* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
  343.  
  344. enum
  345. {
  346.     RTAX_UNSPEC,
  347. #define RTAX_UNSPEC RTAX_UNSPEC
  348.     RTAX_LOCK,
  349. #define RTAX_LOCK RTAX_LOCK
  350.     RTAX_MTU,
  351. #define RTAX_MTU RTAX_MTU
  352.     RTAX_WINDOW,
  353. #define RTAX_WINDOW RTAX_WINDOW
  354.     RTAX_RTT,
  355. #define RTAX_RTT RTAX_RTT
  356.     RTAX_RTTVAR,
  357. #define RTAX_RTTVAR RTAX_RTTVAR
  358.     RTAX_SSTHRESH,
  359. #define RTAX_SSTHRESH RTAX_SSTHRESH
  360.     RTAX_CWND,
  361. #define RTAX_CWND RTAX_CWND
  362.     RTAX_ADVMSS,
  363. #define RTAX_ADVMSS RTAX_ADVMSS
  364.     RTAX_REORDERING,
  365. #define RTAX_REORDERING RTAX_REORDERING
  366.     RTAX_HOPLIMIT,
  367. #define RTAX_HOPLIMIT RTAX_HOPLIMIT
  368.     RTAX_INITCWND,
  369. #define RTAX_INITCWND RTAX_INITCWND
  370.     RTAX_FEATURES,
  371. #define RTAX_FEATURES RTAX_FEATURES
  372.     RTAX_RTO_MIN,
  373. #define RTAX_RTO_MIN RTAX_RTO_MIN
  374.     __RTAX_MAX
  375. };
  376.  
  377. #define RTAX_MAX (__RTAX_MAX - 1)
  378.  
  379. #define RTAX_FEATURE_ECN    0x00000001
  380. #define RTAX_FEATURE_SACK    0x00000002
  381. #define RTAX_FEATURE_TIMESTAMP    0x00000004
  382. #define RTAX_FEATURE_ALLFRAG    0x00000008
  383.  
  384. struct rta_session
  385. {
  386.     __u8    proto;
  387.     __u8    pad1;
  388.     __u16    pad2;
  389.  
  390.     union {
  391.         struct {
  392.             __u16    sport;
  393.             __u16    dport;
  394.         } ports;
  395.  
  396.         struct {
  397.             __u8    type;
  398.             __u8    code;
  399.             __u16    ident;
  400.         } icmpt;
  401.  
  402.         __u32        spi;
  403.     } u;
  404. };
  405.  
  406. /****
  407.  *        General form of address family dependent message.
  408.  ****/
  409.  
  410. struct rtgenmsg
  411. {
  412.     unsigned char        rtgen_family;
  413. };
  414.  
  415. /*****************************************************************
  416.  *        Link layer specific messages.
  417.  ****/
  418.  
  419. /* struct ifinfomsg
  420.  * passes link level specific information, not dependent
  421.  * on network protocol.
  422.  */
  423.  
  424. struct ifinfomsg
  425. {
  426.     unsigned char    ifi_family;
  427.     unsigned char    __ifi_pad;
  428.     unsigned short    ifi_type;        /* ARPHRD_* */
  429.     int        ifi_index;        /* Link index    */
  430.     unsigned    ifi_flags;        /* IFF_* flags    */
  431.     unsigned    ifi_change;        /* IFF_* change mask */
  432. };
  433.  
  434. /********************************************************************
  435.  *        prefix information 
  436.  ****/
  437.  
  438. struct prefixmsg
  439. {
  440.     unsigned char    prefix_family;
  441.     unsigned char    prefix_pad1;
  442.     unsigned short    prefix_pad2;
  443.     int        prefix_ifindex;
  444.     unsigned char    prefix_type;
  445.     unsigned char    prefix_len;
  446.     unsigned char    prefix_flags;
  447.     unsigned char    prefix_pad3;
  448. };
  449.  
  450. enum 
  451. {
  452.     PREFIX_UNSPEC,
  453.     PREFIX_ADDRESS,
  454.     PREFIX_CACHEINFO,
  455.     __PREFIX_MAX
  456. };
  457.  
  458. #define PREFIX_MAX    (__PREFIX_MAX - 1)
  459.  
  460. struct prefix_cacheinfo
  461. {
  462.     __u32    preferred_time;
  463.     __u32    valid_time;
  464. };
  465.  
  466.  
  467. /*****************************************************************
  468.  *        Traffic control messages.
  469.  ****/
  470.  
  471. struct tcmsg
  472. {
  473.     unsigned char    tcm_family;
  474.     unsigned char    tcm__pad1;
  475.     unsigned short    tcm__pad2;
  476.     int        tcm_ifindex;
  477.     __u32        tcm_handle;
  478.     __u32        tcm_parent;
  479.     __u32        tcm_info;
  480. };
  481.  
  482. enum
  483. {
  484.     TCA_UNSPEC,
  485.     TCA_KIND,
  486.     TCA_OPTIONS,
  487.     TCA_STATS,
  488.     TCA_XSTATS,
  489.     TCA_RATE,
  490.     TCA_FCNT,
  491.     TCA_STATS2,
  492.     TCA_STAB,
  493.     __TCA_MAX
  494. };
  495.  
  496. #define TCA_MAX (__TCA_MAX - 1)
  497.  
  498. #define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
  499. #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
  500.  
  501. /********************************************************************
  502.  *        Neighbor Discovery userland options
  503.  ****/
  504.  
  505. struct nduseroptmsg
  506. {
  507.     unsigned char    nduseropt_family;
  508.     unsigned char    nduseropt_pad1;
  509.     unsigned short    nduseropt_opts_len;    /* Total length of options */
  510.     int        nduseropt_ifindex;
  511.     __u8        nduseropt_icmp_type;
  512.     __u8        nduseropt_icmp_code;
  513.     unsigned short    nduseropt_pad2;
  514.     unsigned int    nduseropt_pad3;
  515.     /* Followed by one or more ND options */
  516. };
  517.  
  518. enum
  519. {
  520.     NDUSEROPT_UNSPEC,
  521.     NDUSEROPT_SRCADDR,
  522.     __NDUSEROPT_MAX
  523. };
  524.  
  525. #define NDUSEROPT_MAX    (__NDUSEROPT_MAX - 1)
  526.  
  527. /* RTnetlink multicast groups - backwards compatibility for userspace */
  528. #define RTMGRP_LINK        1
  529. #define RTMGRP_NOTIFY        2
  530. #define RTMGRP_NEIGH        4
  531. #define RTMGRP_TC        8
  532.  
  533. #define RTMGRP_IPV4_IFADDR    0x10
  534. #define RTMGRP_IPV4_MROUTE    0x20
  535. #define RTMGRP_IPV4_ROUTE    0x40
  536. #define RTMGRP_IPV4_RULE    0x80
  537.  
  538. #define RTMGRP_IPV6_IFADDR    0x100
  539. #define RTMGRP_IPV6_MROUTE    0x200
  540. #define RTMGRP_IPV6_ROUTE    0x400
  541. #define RTMGRP_IPV6_IFINFO    0x800
  542.  
  543. #define RTMGRP_DECnet_IFADDR    0x1000
  544. #define RTMGRP_DECnet_ROUTE     0x4000
  545.  
  546. #define RTMGRP_IPV6_PREFIX    0x20000
  547.  
  548. /* RTnetlink multicast groups */
  549. enum rtnetlink_groups {
  550.     RTNLGRP_NONE,
  551. #define RTNLGRP_NONE        RTNLGRP_NONE
  552.     RTNLGRP_LINK,
  553. #define RTNLGRP_LINK        RTNLGRP_LINK
  554.     RTNLGRP_NOTIFY,
  555. #define RTNLGRP_NOTIFY        RTNLGRP_NOTIFY
  556.     RTNLGRP_NEIGH,
  557. #define RTNLGRP_NEIGH        RTNLGRP_NEIGH
  558.     RTNLGRP_TC,
  559. #define RTNLGRP_TC        RTNLGRP_TC
  560.     RTNLGRP_IPV4_IFADDR,
  561. #define RTNLGRP_IPV4_IFADDR    RTNLGRP_IPV4_IFADDR
  562.     RTNLGRP_IPV4_MROUTE,
  563. #define    RTNLGRP_IPV4_MROUTE    RTNLGRP_IPV4_MROUTE
  564.     RTNLGRP_IPV4_ROUTE,
  565. #define RTNLGRP_IPV4_ROUTE    RTNLGRP_IPV4_ROUTE
  566.     RTNLGRP_IPV4_RULE,
  567. #define RTNLGRP_IPV4_RULE    RTNLGRP_IPV4_RULE
  568.     RTNLGRP_IPV6_IFADDR,
  569. #define RTNLGRP_IPV6_IFADDR    RTNLGRP_IPV6_IFADDR
  570.     RTNLGRP_IPV6_MROUTE,
  571. #define RTNLGRP_IPV6_MROUTE    RTNLGRP_IPV6_MROUTE
  572.     RTNLGRP_IPV6_ROUTE,
  573. #define RTNLGRP_IPV6_ROUTE    RTNLGRP_IPV6_ROUTE
  574.     RTNLGRP_IPV6_IFINFO,
  575. #define RTNLGRP_IPV6_IFINFO    RTNLGRP_IPV6_IFINFO
  576.     RTNLGRP_DECnet_IFADDR,
  577. #define RTNLGRP_DECnet_IFADDR    RTNLGRP_DECnet_IFADDR
  578.     RTNLGRP_NOP2,
  579.     RTNLGRP_DECnet_ROUTE,
  580. #define RTNLGRP_DECnet_ROUTE    RTNLGRP_DECnet_ROUTE
  581.     RTNLGRP_DECnet_RULE,
  582. #define RTNLGRP_DECnet_RULE    RTNLGRP_DECnet_RULE
  583.     RTNLGRP_NOP4,
  584.     RTNLGRP_IPV6_PREFIX,
  585. #define RTNLGRP_IPV6_PREFIX    RTNLGRP_IPV6_PREFIX
  586.     RTNLGRP_IPV6_RULE,
  587. #define RTNLGRP_IPV6_RULE    RTNLGRP_IPV6_RULE
  588.     RTNLGRP_ND_USEROPT,
  589. #define RTNLGRP_ND_USEROPT    RTNLGRP_ND_USEROPT
  590.     RTNLGRP_PHONET_IFADDR,
  591. #define RTNLGRP_PHONET_IFADDR    RTNLGRP_PHONET_IFADDR
  592.     RTNLGRP_PHONET_ROUTE,
  593. #define RTNLGRP_PHONET_ROUTE    RTNLGRP_PHONET_ROUTE
  594.     __RTNLGRP_MAX
  595. };
  596. #define RTNLGRP_MAX    (__RTNLGRP_MAX - 1)
  597.  
  598. /* TC action piece */
  599. struct tcamsg
  600. {
  601.     unsigned char    tca_family;
  602.     unsigned char    tca__pad1;
  603.     unsigned short    tca__pad2;
  604. };
  605. #define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
  606. #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
  607. #define TCA_ACT_TAB 1 /* attr type must be >=1 */    
  608. #define TCAA_MAX 1
  609.  
  610. /* End of information exported to user level */
  611.  
  612.  
  613.  
  614. #endif    /* __LINUX_RTNETLINK_H */
  615.